iT邦幫忙

2024 iThome 鐵人賽

DAY 12
0
自我挑戰組

自學vue~點亮Roadmap過程系列 第 12

vue3鍊成術第十二天-組件(實作)

  • 分享至 

  • xImage
  •  

組件

目前為止,我們只使用了單個組件。真正的 Vue 應用往往是由嵌套組件創建的。

父組件可以在模板中渲染另一個組件作為子組件。要使用子組件,我們需要先引入它:

import ChildComp from './ChildComp.vue'
<ChildComp />

實作

<script setup>

</script>

<template>
  <!-- 渲染子組件 -->
</template>

完成

<script setup>
import ChildComp from './ChildComp.vue'
</script>

<template>
  <ChildComp />
</template>

https://ithelp.ithome.com.tw/upload/images/20240925/20169210uGmUAVflZ8.png

Props

子組件可以通過 props 從父組件接受動態數據。首先,需要聲明它所接受的 props:

<!-- ChildComp.vue -->
<script setup>
const props = defineProps({
  msg: String
})
</script>

注意 defineProps() 不需要導入。一旦宣告,msg prop 就可以在子組件的模板中使用。它也可以通過 defineProps() 所返回的對象在 JavaScript 中訪問。

defineProps() 的特點:

  • 更簡潔:相比於傳統的 props 定義方式,script setup 模式使代碼更簡潔,無需手動設置 export default。
  • 自動推斷類型:如果不用 TypeScript,它也會自動推斷 props 的類型。
  • 無需顯式返回:在 script setup 中,定義的變量和函數會自動暴露到模板中,無需手動返回。

父組件可以像聲明 HTML 屬性一樣傳遞 props。若要傳遞動態值,也可以使用 v-bind 語法:

<ChildComp :msg="greeting" />

實作

<script setup>
import { ref } from 'vue'
import ChildComp from './ChildComp.vue'

const greeting = ref('Hello from parent')
</script>

<template>
  <ChildComp />
</template>

https://ithelp.ithome.com.tw/upload/images/20240925/20169210LZGajjobgp.png

完成

<script setup>
import { ref } from 'vue'
import ChildComp from './ChildComp.vue'

const greeting = ref('Hello from parent')
</script>

<template>
  <ChildComp :msg="greeting" />
</template>

https://ithelp.ithome.com.tw/upload/images/20240925/20169210O1F0VPjJpz.png


上一篇
vue3鍊成術第十一天-生命週期和模板引用(實作)
下一篇
vue3鍊成術第十三天-Emits(實作)
系列文
自學vue~點亮Roadmap過程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言